package pe.bf.extranet.ejb;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.sql.DataSource;

import pe.bf.domain.bean.Transferencia;
import pe.bf.domain.constantes.Constantes;
import pe.bf.extranet.dao.TransferenciaDAO;
import pe.bf.extranet.dao.impl.TransferenciaDAOImpl;

/**
 * Session Bean implementation class TransferenciaEJB
 */
@WebService
@Stateless
@LocalBean
public class TransferenciasEJB {

	@Resource(name = Constantes.JNDI_DATASOURCE)
	public DataSource dataSource;

	private TransferenciaDAO transferenciaDAO;

	/**
	 * Default constructor.
	 */
	public TransferenciasEJB() {
		// TODO Auto-generated constructor stub
	}

	@WebMethod
	public boolean crearTrasferencia(Transferencia transferencia) {
		try {
			transferenciaDAO.crearTrasferencia(transferencia);
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}

	@WebMethod
	public void aprobarTransferencia(Transferencia transferencia) {
		try {
			transferenciaDAO.aprobarTransferencia(transferencia);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	@WebMethod
	public void aprobarTransferenciaBatch(List<Transferencia> transferenciaList) {
		try {
			transferenciaDAO.aprobarTransferenciaBatch(transferenciaList);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	@WebMethod
	public List<Transferencia> listarTranferenciaPorEmpresaPorEstado(
			Transferencia trans) {
		try {
			return transferenciaDAO
					.listarTranferenciaPorEmpresaPorEstado(trans);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	@WebMethod
	public List<Transferencia> listarTranferenciaPorEstado(Transferencia trans) {
		List<Transferencia> listaTransferencia = new ArrayList<Transferencia>();
		try {
			listaTransferencia = transferenciaDAO
					.listarTranferenciaPorEmpresaPorEstado(trans);

		} catch (Exception e) {
			e.printStackTrace();
		}

		return listaTransferencia;
	}

	@PostConstruct
	public void init() {
		transferenciaDAO = new TransferenciaDAOImpl(dataSource);
	}
}
